// #include <stdio.h>

// int main()
// {
//     int array[]={34,21,43,65,87,55,22,67};
//     int arrayLen=sizeof(array)/sizeof(array[0]);
//     int i,j,temp;
//     printf("The original array is:\n");
//     for(i=0;i<arrayLen;i++)
//     printf("%d ",array[i]);
//     printf("\n");
//     for(i=0;i<arrayLen-1;i++)
//     for(j=0;j<arrayLen-1-i;j++)
//     {
//         if(array[j]>array[j+1])
//         {
//             temp=array[j];
//             array[j]=array[j+1];
//             array[j+1]=temp;
//         }
//     }
//     printf("The sorted array is:\n");
//     for(i=0;i<arrayLen;i++)
//     printf("%d ",array[i]);
//     return 0;
// }

//改良版冒泡排序
#include <stdio.h>

void printArray(int array[],int len);

int main()
{
    int array[]={34,21,43,65,87,55,22,67};
    int arrayLen=sizeof(array)/sizeof(array[0]);
    int i,j,temp;
    int flag; //用于标记相邻的数据已符合排序要求
    printf("The original array is:\n");
    printArray(array,arrayLen);
    printf("\n");
    for(i=0;i<arrayLen-1;i++)
    {
        flag=0;
        for(j=0;j<arrayLen-1-i;j++)
        {
            if(array[j]>array[j+1])
            {
                flag=1; //若不符合排序要求，则将flag改为1
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
        printf("This %d round:",i);
        printArray(array,arrayLen);
        printf("\n");
        if(!flag) //若flag为0，则说明此次相邻数据已符合要求，不需要进行交换
        break;
    }
    
    
    return 0;
}
void printArray(int array[],int len)
{
    int i;
    for(i=0;i<len;i++)
    {
        printf("%d ",array[i]);
        
    }
}